/**
 * author:李硕 2307124008
 * date:2025-04-21
 * version:1.0
 *
 * 包声明，指定该类所属的包为 demo5
 *
 * 定义包名，该类属于 demo5 包
 */
package demo5;

/**
 * 导入 java.util 包下的 ArrayList 类，用于创建动态数组
 * 此导入语句未被使用，可考虑移除
 */
 import demo5.CanteenCategory;

 import java.util.ArrayList;

/**
 * 导入 java.util 包下的 List 接口，用于表示列表数据结构
 * 此导入语句未被使用，可考虑移除
 */
import java.util.List;

/**
 * 食堂基础类，用于表示食堂的基本信息和操作
 */
class Canteen {
    /**
     * 食堂的唯一标识 ID
     * 该字段可声明为 final，因为其值在对象创建后通常不会改变
     */
    private int canteenId;
    /**
     * 食堂的地理位置
     */
    private String location;
    /**
     * 食堂的名称
     */
    private String name;
    /**
     * 食堂的容纳人数
     */
    private int capacity;
    /**
     * 食堂内商户的数量
     */
    private int merchantCount;
    /**
     * 食堂的类别，使用 CanteenCategory 枚举类型
     */
    private CanteenCategory category;
    /**
     * 食堂的使用状态，true 表示活跃，false 表示不活跃
     */
    private boolean isActive;

    /**
     * 构造函数，用于初始化食堂对象
     *
     * @param canteenId     食堂的唯一标识 ID
     * @param location      食堂的地理位置
     * @param name          食堂的名称
     * @param capacity      食堂的容纳人数
     * @param merchantCount 食堂内商户的数量
     * @param category      食堂的类别
     */
    public Canteen(int canteenId, String location, String name, int capacity, int merchantCount, CanteenCategory category) {
        this.canteenId = canteenId;
        this.location = location;
        this.name = name;
        this.capacity = capacity;
        this.merchantCount = merchantCount;
        this.category = category;
        // 新创建的食堂默认状态为活跃
        this.isActive = true;
    }

    /**
     * 食堂信息添加方法，可在构造函数完成基础信息初始化
     * 此方法可根据实际业务需求进行扩展，添加具体的逻辑
     */
    public void addCanteenInfo() {
        // 可添加具体逻辑
    }

    /**
     * 修改食堂信息的方法
     *
     * @param location      新的食堂地理位置
     * @param name          新的食堂名称
     * @param capacity      新的食堂容纳人数
     * @param merchantCount 新的食堂内商户数量
     * @param category      新的食堂类别
     */
    public void modifyCanteenInfo(String location, String name, int capacity, int merchantCount, CanteenCategory category) {
        this.location = location;
        this.name = name;
        this.capacity = capacity;
        this.merchantCount = merchantCount;
        this.category = category;
    }

    /**
     * 更改食堂使用状态的方法
     *
     * @param isActive 新的食堂使用状态，true 表示活跃，false 表示不活跃
     */
    public void changeCanteenStatus(boolean isActive) {
        this.isActive = isActive;
    }

    /**
     * 查询食堂信息的方法，返回包含食堂所有信息的字符串
     *
     * @return 包含食堂 ID、位置、名称、容量、商户数量、类别和状态的字符串
     */
    public String getCanteenInfo() {
        return "Canteen ID: " + canteenId + ", Location: " + location + ", Name: " + name +
                ", Capacity: " + capacity + ", Merchant Count: " + merchantCount +
                ", Category: " + category.getCategoryName() + ", Status: " + (isActive ? "Active" : "Inactive");
    }

    /**
     * 获取食堂唯一标识 ID 的方法
     * 此方法未被使用，可考虑移除
     *
     * @return 食堂的唯一标识 ID
     */
    public int getCanteenId() {
        return canteenId;
    }

    /**
     * 获取食堂地理位置的方法
     * 此方法未被使用，可考虑移除
     *
     * @return 食堂的地理位置
     */
    public String getLocation() {
        return location;
    }

    /**
     * 获取食堂名称的方法
     *
     * @return 食堂的名称
     */
    public String getName() {
        return name;
    }

    /**
     * 获取食堂容纳人数的方法
     * 此方法未被使用，可考虑移除
     *
     * @return 食堂的容纳人数
     */
    public int getCapacity() {
        return capacity;
    }

    /**
     * 获取食堂内商户数量的方法
     * 此方法未被使用，可考虑移除
     *
     * @return 食堂内商户的数量
     */
    public int getMerchantCount() {
        return merchantCount;
    }

    /**
     * 获取食堂类别的方法
     * 此方法未被使用，可考虑移除
     *
     * @return 食堂的类别
     */
    public CanteenCategory getCategory() {
        return category;
    }

    /**
     * 获取食堂使用状态的方法
     * 此方法未被使用，可考虑移除
     *
     * @return 食堂的使用状态，true 表示活跃，false 表示不活跃
     */
    public boolean isActive() {
        return isActive;
    }
}
